/* USER CODE BEGIN Header */
/**
 ******************************************************************************
 * File Name          : freertos.c
 * Description        : Code for freertos applications
 ******************************************************************************
 * @attention
 *
 * Copyright (c) 2023 STMicroelectronics.
 * All rights reserved.
 *
 * This software is licensed under terms that can be found in the LICENSE file
 * in the root directory of this software component.
 * If no LICENSE file comes with this software, it is provided AS-IS.
 *
 ******************************************************************************
 */
/* USER CODE END Header */

/* Includes ------------------------------------------------------------------*/
#include "FreeRTOS.h"
#include "task.h"
#include "main.h"
#include "cmsis_os.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "dma.h"
#include "usart.h"
#include "gpio.h"
#include "AHT20-21_DEMO_V1_3.h"
#include "usart.h"
#include "stdio.h"

/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
// 262
// 空调数据相关的指令。
uint8_t write_data[18][362] = {
    /*OPen-15*/ {0x68, 0x04, 0x01, 0xFF, 0x17, 0x06, 0xAC, 0x04, 0xAD, 0x04, 0x3F, 0xCF, 0x01, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3E, 0x48, 0x3D, 0x4A, 0x3F, 0xCF, 0x01, 0x3C, 0x49, 0x3C, 0x49, 0x40, 0xCF, 0x01, 0x3E, 0x48, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3D, 0x49, 0x40, 0xCF, 0x01, 0x3F, 0x46, 0x40, 0x46, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3D, 0xD2, 0x01, 0x3F, 0xCF, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0x46, 0x40, 0x46, 0x30, 0x46, 0x3E, 0x48, 0x40, 0x46, 0x3D, 0xD2, 0x01, 0x3F, 0x47, 0x3F, 0xCF, 0x01, 0x3C, 0xD5, 0x01, 0x3A, 0x49, 0x3D, 0xD2, 0x01, 0x3F, 0x46, 0x3F, 0x47, 0x3F, 0x46, 0x40, 0xD2, 0x01, 0x3C, 0x46, 0x40, 0x46, 0x3D, 0xD5, 0x01, 0x3D, 0x46, 0x30, 0xD2, 0x01, 0x3B, 0xD1, 0x01, 0x3C, 0x9B, 0x05, 0xAA, 0x04, 0xB1, 0x04, 0x3D, 0xD2, 0x01, 0x3A, 0x4A, 0x3F, 0xD2, 0x01, 0x3C, 0xD0, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x39, 0xD5, 0x01, 0x3D, 0x4A, 0x39, 0x4D, 0x39, 0xD5, 0x01, 0x39, 0x4D, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0xD2, 0x01, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3C, 0x4D, 0x39, 0x4D, 0x3C, 0x4A, 0x39, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD3, 0x01, 0x3B, 0xD2, 0x01, 0x3F, 0xCF, 0x01, 0x3C, 0xD5, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0x4A, 0x3C, 0x4A, 0x15, 0x71, 0x15, 0x71, 0x15, 0x71, 0x15, 0xF9, 0x01, 0x39, 0x4D, 0x39, 0xD5, 0x01, 0x3A, 0xD5, 0x01, 0x3A, 0x4D, 0x39, 0xD5, 0x01, 0x3D, 0x4A, 0x39, 0x4D, 0x3C, 0x4A, 0x15, 0xFA, 0x01, 0x3C, 0x4A, 0x15, 0x71, 0x39, 0xD5, 0x01, 0x3A, 0x4C, 0x3C, 0xD2, 0x01, 0x39, 0xD5, 0x01, 0x39, 0xD4, 0x16},
    /*Close-16*/ {0x68, 0x04, 0x01, 0xFF, 0x17, 0x06, 0xA6, 0x04, 0xB1, 0x04, 0x3F, 0xCF, 0x01, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x46, 0x3F, 0x46, 0x40, 0xCF, 0x01, 0x3F, 0x46, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x40, 0x46, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3D, 0x49, 0x3D, 0xD2, 0x01, 0x3D, 0x49, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3F, 0x46, 0x40, 0xD2, 0x01, 0x3A, 0xD2, 0x01, 0x3F, 0xCF, 0x01, 0x3F, 0x46, 0x40, 0x46, 0x40, 0x46, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x3C, 0x49, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3D, 0xD2, 0x01, 0x3F, 0x46, 0x3D, 0x49, 0x40, 0x46, 0x40, 0x46, 0x40, 0x46, 0x40, 0x46, 0x40, 0x46, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3C, 0xD2, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x98, 0x05, 0xA7, 0x04, 0xB4, 0x04, 0x3D, 0xD2, 0x01, 0x3D, 0x46, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0x46, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x30, 0x46, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x3C, 0x49, 0x3F, 0x46, 0x40, 0xCF, 0x01, 0x3C, 0xD5, 0x01, 0x3A, 0x49, 0x40, 0xCF, 0x01, 0x3E, 0x47, 0x3F, 0xD2, 0x01, 0x3A, 0xD5, 0x01, 0x3A, 0xD5, 0x01, 0x3A, 0xD5, 0x01, 0x3A, 0x4D, 0x3C, 0xCF, 0x01, 0x3D, 0xD2, 0x01, 0x3C, 0xD5, 0x01, 0x3D, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x39, 0xD5, 0x01, 0x3A, 0x4D, 0x39, 0x4D, 0x39, 0xD5, 0x01, 0x3A, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3F, 0x4A, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3A, 0xED, 0x16},
    /*17*/ {0x68, 0x04, 0x01, 0xFF, 0x17, 0x06, 0xAC, 0x04, 0xAD, 0x04, 0x3F, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xD2, 0x01, 0x3A, 0x4D, 0x3C, 0xCF, 0x01, 0x3F, 0xD2, 0x01, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3D, 0xD4, 0x01, 0x3C, 0xD2, 0x01, 0x3A, 0xD2, 0x01, 0x3D, 0x4D, 0x3C, 0xCF, 0x01, 0x30, 0x4A, 0x3C, 0x4A, 0x39, 0x4C, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3B, 0x4B, 0x3C, 0x4A, 0x3A, 0x4C, 0x39, 0x4C, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x47, 0x3C, 0xD5, 0x01, 0x3A, 0xD2, 0x01, 0x3F, 0xCF, 0x01, 0x3E, 0xD0, 0x01, 0x3C, 0xD2, 0x01, 0x3F, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x98, 0x05, 0xAC, 0x04, 0xB0, 0x04, 0x3D, 0xCF, 0x01, 0x3F, 0x4A, 0x3B, 0xD0, 0x01, 0x3C, 0xD2, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0xD2, 0x01, 0x3D, 0x4A, 0x3C, 0x4A, 0x3C, 0xD2, 0x01, 0x3A, 0x4D, 0x3A, 0x4C, 0x3C, 0xD2, 0x01, 0x3A, 0xD5, 0x01, 0x3D, 0x4A, 0x3C, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3D, 0x4A, 0x3C, 0xD2, 0x01, 0x3D, 0xD1, 0x01, 0x3A, 0xD2, 0x01, 0x3C, 0xD5, 0x01, 0x3A, 0xD5, 0x01, 0x3A, 0xD2, 0x01, 0x3C, 0x4D, 0x39, 0xD2, 0x01, 0x3C, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3F, 0x47, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0xD3, 0x01, 0x39, 0xD3, 0x01, 0x3F, 0xD2, 0x01, 0x39, 0xD5, 0x01, 0x39, 0xD5, 0x01, 0x39, 0xD5, 0x01, 0x39, 0xD5, 0x01, 0x39, 0xD5, 0x01, 0x39, 0xE6, 0x16},
    /*18*/ {0x68, 0x04, 0x01, 0xFF, 0x17, 0x06, 0xA9, 0x04, 0xAE, 0x04, 0x3F, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0xD2, 0x01, 0x3C, 0xCF, 0x01, 0x3D, 0x4D, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x39, 0x49, 0x3D, 0xD2, 0x01, 0x30, 0xCF, 0x01, 0x3C, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xD0, 0x01, 0x3F, 0xD2, 0x01, 0x3C, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x47, 0x3D, 0x49, 0x40, 0x46, 0x40, 0x4A, 0x3C, 0x47, 0x3F, 0x47, 0x3F, 0x4A, 0x3C, 0x47, 0x3F, 0x47, 0x3F, 0xCF, 0x01, 0x30, 0x47, 0x40, 0x47, 0x3F, 0x47, 0x3D, 0x4A, 0x3F, 0xCF, 0x01, 0x3F, 0xD0, 0x01, 0x3D, 0xD1, 0x01, 0x40, 0x46, 0x3E, 0xD1, 0x01, 0x3F, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3F, 0xD0, 0x01, 0x3F, 0x96, 0x05, 0xAD, 0x04, 0xAE, 0x04, 0x3F, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3D, 0x4C, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3C, 0x4D, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3C, 0xD2, 0x01, 0x3F, 0x4A, 0x39, 0xD2, 0x01, 0x3F, 0xD0, 0x01, 0x3C, 0x4D, 0x39, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD3, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0x4D, 0x39, 0xD2, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x3C, 0xD0, 0x01, 0x11, 0x77, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0xD5, 0x01, 0x39, 0xD5, 0x01, 0x39, 0xD5, 0x01, 0x39, 0x4D, 0x39, 0xD5, 0x01, 0x39, 0xD5, 0x01, 0x39, 0xD5, 0x01, 0x39, 0xD5, 0x01, 0x39, 0xD6, 0x16},
    /*19*/ {0x68, 0x04, 0x01, 0xFF, 0x17, 0x06, 0xAD, 0x04, 0xB1, 0x04, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0xCF, 0x01, 0x30, 0xCF, 0x01, 0x3F, 0x4A, 0x39, 0x4D, 0x3C, 0xD0, 0x01, 0x3F, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x3D, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x30, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0xD0, 0x01, 0x3D, 0xD2, 0x01, 0x3D, 0x4D, 0x3C, 0xCF, 0x01, 0x43, 0x47, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x47, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3C, 0xD2, 0x01, 0x3D, 0x4D, 0x3C, 0x47, 0x3C, 0x4D, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3F, 0x47, 0x3F, 0x47, 0x3D, 0xD1, 0x01, 0x3F, 0xC0, 0x01, 0x3F, 0xD2, 0x01, 0x3A, 0xD2, 0x01, 0x3C, 0x99, 0x05, 0xAD, 0x04, 0xAE, 0x04, 0x3F, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x3B, 0xD3, 0x01, 0x3D, 0x4A, 0x3C, 0x4A, 0x3C, 0xD2, 0x01, 0x3A, 0x4D, 0x3C, 0x4A, 0x3C, 0xD2, 0x01, 0x3A, 0xD2, 0x01, 0x30, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xD2, 0x01, 0x3D, 0x4A, 0x39, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD5, 0x01, 0x3A, 0xD2, 0x01, 0x3F, 0xD0, 0x01, 0x3C, 0xD2, 0x01, 0x3D, 0x4D, 0x39, 0xD3, 0x01, 0x3C, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0xD0, 0x01, 0x3F, 0xD3, 0x01, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x39, 0xD5, 0x01, 0x3A, 0xD5, 0x01, 0x3A, 0x4D, 0x39, 0x4C, 0x3A, 0xD5, 0x01, 0x3A, 0xD5, 0x01, 0x3A, 0xD5, 0x01, 0x3A, 0xD5, 0x01, 0x3A, 0xCB, 0x16},
    /*20*/ {0x68, 0x04, 0x01, 0xFF, 0x17, 0x06, 0xA9, 0x04, 0xAE, 0x04, 0x40, 0xCF, 0x01, 0x30, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x39, 0x4D, 0x3C, 0xD0, 0x01, 0x40, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x4D, 0x3C, 0xCF, 0x01, 0x30, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x4D, 0x3A, 0xD5, 0x01, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3B, 0x4C, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3C, 0x4D, 0x3C, 0x4A, 0x3C, 0x4A, 0x3A, 0x4D, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x3E, 0xD1, 0x01, 0x3F, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0xD0, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0xD2, 0x01, 0x3C, 0x97, 0x05, 0xAD, 0x04, 0xAE, 0x04, 0x3F, 0xCF, 0x01, 0x3F, 0x46, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0x4A, 0x3B, 0x4B, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3D, 0x4A, 0x3F, 0x47, 0x3F, 0xCF, 0x01, 0x3C, 0xD2, 0x01, 0x40, 0x47, 0x3F, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0x47, 0x3F, 0xD2, 0x01, 0x3F, 0xCD, 0x01, 0x3F, 0xCF, 0x01, 0x3F, 0xD2, 0x01, 0x3C, 0xD3, 0x01, 0x3A, 0xD5, 0x01, 0x3D, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x39, 0x4D, 0x3A, 0x4C, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x3C, 0x4A, 0x39, 0x4D, 0x39, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3C, 0x4D, 0x3C, 0xCF, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xE5, 0x16},
    /*21*/ {0x68, 0x04, 0x01, 0xFF, 0x17, 0x06, 0xAC, 0x04, 0xAD, 0x04, 0x40, 0xCF, 0x01, 0x3F, 0x4A, 0x3F, 0xCC, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0x47, 0x3C, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3C, 0x4D, 0x3C, 0xCF, 0x01, 0x30, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x4D, 0x3C, 0xD2, 0x01, 0x3C, 0x4A, 0x3C, 0x4A, 0x3B, 0x49, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0xD0, 0x01, 0x3F, 0xCF, 0x01, 0x3F, 0x47, 0x3D, 0x4D, 0x3C, 0x4A, 0x39, 0x4D, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x3A, 0x4C, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0x96, 0x05, 0xAD, 0x04, 0xAE, 0x04, 0x3D, 0xD1, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0x47, 0x3F, 0x4A, 0x39, 0xD2, 0x01, 0x40, 0x4A, 0x3C, 0x47, 0x3F, 0xCF, 0x01, 0x3C, 0x4D, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3C, 0xD2, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x49, 0x3F, 0xCF, 0x01, 0x3E, 0xD1, 0x01, 0x3F, 0xD2, 0x01, 0x3A, 0xD2, 0x01, 0x3F, 0xCF, 0x01, 0x3C, 0xD5, 0x01, 0x3A, 0x4C, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x39, 0x4D, 0x3C, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0xD2, 0x01, 0x3A, 0xD5, 0x01, 0x3A, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0xD2, 0x01, 0x3C, 0x4D, 0x39, 0x4D, 0x39, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD3, 0x01, 0x3C, 0xF1, 0x16},
    /*22*/ {0x68, 0x04, 0x01, 0xFF, 0x17, 0x06, 0xAD, 0x04, 0xAE, 0x04, 0x3F, 0xC0, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x39, 0x4D, 0x3C, 0xD2, 0x01, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3C, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x43, 0xCC, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x30, 0x47, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0x47, 0x3F, 0x47, 0x30, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0x96, 0x05, 0xAD, 0x04, 0xAE, 0x04, 0x3E, 0xD1, 0x01, 0x3F, 0x47, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3E, 0x49, 0x3F, 0x47, 0x3F, 0xCF, 0x01, 0x3F, 0x47, 0x3F, 0x47, 0x3F, 0xCF, 0x01, 0x3D, 0x4A, 0x3F, 0x47, 0x3F, 0xCF, 0x01, 0x3D, 0xD2, 0x01, 0x3F, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0xD0, 0x01, 0x3F, 0x47, 0x3F, 0xCF, 0x01, 0x30, 0xCF, 0x01, 0x40, 0xD2, 0x01, 0x3D, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3D, 0xD2, 0x01, 0x3F, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x39, 0x4D, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0xD2, 0x01, 0x3D, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3D, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0xD2, 0x01, 0x3C, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3F, 0xC0, 0x01, 0x3F, 0xD0, 0x01, 0x3F, 0xBC, 0x16},
    /*23*/ {0x68, 0x04, 0x01, 0xFF, 0x17, 0x06, 0xAD, 0x04, 0xAD, 0x04, 0x30, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xD2, 0x01, 0x3D, 0xCF, 0x01, 0x3F, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x30, 0xCF, 0x01, 0x3D, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x3B, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x39, 0xD2, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x3C, 0x4A, 0x3C, 0xD2, 0x01, 0x3D, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0x47, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x99, 0x05, 0xAA, 0x04, 0xAE, 0x04, 0x3F, 0xD2, 0x01, 0x3B, 0x48, 0x3F, 0xCF, 0x01, 0x40, 0xD2, 0x01, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0xD2, 0x01, 0x3D, 0x47, 0x3F, 0x4A, 0x3C, 0xCF, 0x01, 0x3C, 0x4D, 0x3C, 0x47, 0x3F, 0xCF, 0x01, 0x3D, 0xD5, 0x01, 0x3D, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3A, 0xD4, 0x01, 0x3D, 0xD2, 0x01, 0x3A, 0xD2, 0x01, 0x40, 0x4A, 0x3D, 0xD2, 0x01, 0x3A, 0x4C, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x3D, 0x4A, 0x3D, 0x49, 0x39, 0xD2, 0x01, 0x30, 0x4A, 0x3C, 0xD2, 0x01, 0x3D, 0x4A, 0x3A, 0x4C, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0xD2, 0x01, 0x3F, 0x4A, 0x3C, 0xD0, 0x01, 0x3C, 0x4D, 0x39, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3F, 0xE1, 0x16},
    /*24*/ {0x68, 0x04, 0x01, 0xFF, 0x17, 0x06, 0xA9, 0x04, 0xAE, 0x04, 0x3F, 0xCF, 0x01, 0x40, 0x47, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x39, 0x4A, 0x3F, 0xCF, 0x01, 0x40, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x47, 0x3F, 0x4A, 0x3C, 0xCF, 0x01, 0x30, 0xCF, 0x01, 0x3D, 0x4A, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xD2, 0x01, 0x3D, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x4A, 0x3F, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x47, 0x3F, 0xCF, 0x01, 0x40, 0x47, 0x3C, 0x4D, 0x3C, 0x46, 0x40, 0x47, 0x3F, 0x47, 0x3C, 0x4A, 0x3F, 0xCF, 0x01, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0x99, 0x05, 0xAA, 0x04, 0xB1, 0x04, 0x3D, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0x4B, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3D, 0x4D, 0x3C, 0x4A, 0x3C, 0xD2, 0x01, 0x3A, 0xD2, 0x01, 0x3F, 0x4A, 0x3C, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3A, 0x4D, 0x3C, 0xCF, 0x01, 0x3D, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3F, 0xCF, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0x4D, 0x39, 0xD2, 0x01, 0x3C, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x3C, 0x4A, 0x3C, 0x4A, 0x39, 0xD2, 0x01, 0x3F, 0x4A, 0x39, 0x4D, 0x3C, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x39, 0x4D, 0x3A, 0xD3, 0x01, 0x3C, 0x4D, 0x3A, 0xD5, 0x01, 0x3A, 0xD5, 0x01, 0x3D, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3A, 0xD5, 0x01, 0x3A, 0xD5, 0x01, 0x3A, 0xFE, 0x16},
    /*25*/ {0x68, 0x06, 0x01, 0xFF, 0x17, 0x06, 0xA9, 0x04, 0xB1, 0x04, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0x4A, 0x39, 0x4D, 0x3C, 0xD2, 0x01, 0x3C, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x3D, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xD2, 0x01, 0x3C, 0xCF, 0x01, 0x40, 0xD2, 0x01, 0x3C, 0xCF, 0x01, 0x40, 0xD2, 0x01, 0x39, 0x4A, 0x3F, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x46, 0x40, 0x4A, 0x3C, 0x4A, 0x3C, 0x46, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3D, 0x4D, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x3C, 0x47, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3E, 0xD1, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0x96, 0x05, 0xAD, 0x04, 0xAE, 0x04, 0x3F, 0xD2, 0x01, 0x3D, 0x47, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0x47, 0x3F, 0x47, 0x3F, 0xCF, 0x01, 0x3F, 0x47, 0x3F, 0x4A, 0x3B, 0xD1, 0x01, 0x3D, 0x4A, 0x3D, 0x49, 0x3F, 0xCF, 0x01, 0x40, 0xD1, 0x01, 0x3D, 0x4A, 0x3C, 0xD2, 0x01, 0x3A, 0xD2, 0x01, 0x3F, 0x4A, 0x3C, 0xD2, 0x01, 0x3B, 0xD1, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0xCF, 0x01, 0x3D, 0x4D, 0x39, 0x4D, 0x3C, 0x4A, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x3C, 0xD0, 0x01, 0x3F, 0xD0, 0x01, 0x3F, 0xD0, 0x01, 0x3C, 0xD3, 0x01, 0x3F, 0xD0, 0x01, 0x19, 0x0E, 0x17, 0xD3, 0x01, 0x3A, 0x05, 0x16},
    /*26*/ {0x68, 0x04, 0x01, 0xFF, 0x17, 0x06, 0xAD, 0x04, 0xAE, 0x04, 0x3F, 0xCF, 0x01, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0x46, 0x3D, 0x49, 0x40, 0xCF, 0x01, 0x40, 0x46, 0x3D, 0x4D, 0x3A, 0xD1, 0x01, 0x40, 0x46, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x49, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0xD0, 0x01, 0x3E, 0xD0, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x49, 0x40, 0xCF, 0x01, 0x40, 0x46, 0x3F, 0x47, 0x40, 0x46, 0x40, 0x46, 0x3F, 0x47, 0x40, 0x46, 0x3E, 0xD1, 0x01, 0x40, 0xCF, 0x01, 0x3C, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x46, 0x40, 0x46, 0x40, 0x46, 0x40, 0x46, 0x40, 0x46, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0x96, 0x05, 0xAD, 0x04, 0xAE, 0x04, 0x40, 0xCF, 0x01, 0x40, 0x46, 0x3D, 0xD1, 0x01, 0x30, 0xCF, 0x01, 0x40, 0x46, 0x40, 0x47, 0x40, 0xCF, 0x01, 0x40, 0x46, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x3D, 0x49, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x3D, 0xD2, 0x01, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x30, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0xD2, 0x01, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x40, 0x46, 0x40, 0x46, 0x40, 0x47, 0x3F, 0x47, 0x3C, 0x4A, 0x3F, 0x4A, 0x3C, 0xCF, 0x01, 0x3D, 0xD2, 0x01, 0x3F, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3C, 0x4D, 0x39, 0xD2, 0x01, 0x3F, 0xCF, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3D, 0xED, 0x16},
    /*27*/ {0x68, 0x04, 0x01, 0xFF, 0x17, 0x06, 0xAA, 0x04, 0xAD, 0x04, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x3D, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3D, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x39, 0xD2, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x3C, 0x4A, 0x3C, 0x47, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3E, 0x98, 0x05, 0xAD, 0x04, 0xAE, 0x04, 0x3F, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0xCF, 0x01, 0x3D, 0xD2, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3D, 0x4A, 0x3F, 0x4A, 0x3C, 0xCF, 0x01, 0x3C, 0x4D, 0x3C, 0x4A, 0x39, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3F, 0x4A, 0x3C, 0xD2, 0x01, 0x3C, 0xD3, 0x01, 0x3C, 0x4B, 0x3C, 0xD2, 0x01, 0x3D, 0xCF, 0x01, 0x3F, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3D, 0xCF, 0x01, 0x3D, 0xD2, 0x01, 0x3F, 0x4A, 0x39, 0xD2, 0x01, 0x3D, 0x4D, 0x3C, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0xD2, 0x01, 0x3C, 0x4D, 0x39, 0x4D, 0x39, 0xD2, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0xD0, 0x01, 0x3F, 0x4A, 0x3C, 0xD0, 0x01, 0x3F, 0xD0, 0x01, 0x3F, 0xD0, 0x01, 0x3F, 0xD0, 0x01, 0x3C, 0x08, 0x16},
    /*28*/ {0x68, 0x06, 0x01, 0xFF, 0x17, 0x06, 0xC1, 0x04, 0x9C, 0x04, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3D, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x39, 0x4D, 0x3C, 0xD2, 0x01, 0x3D, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x3C, 0xD2, 0x01, 0x3D, 0xCF, 0x01, 0x3C, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x30, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x4D, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x47, 0x3C, 0x4E, 0x3B, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xD2, 0x01, 0x3D, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0xD5, 0x01, 0x3D, 0xCF, 0x01, 0x40, 0x98, 0x05, 0xA7, 0x04, 0xB1, 0x04, 0x3C, 0xD2, 0x01, 0x3F, 0x4A, 0x39, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3D, 0x4D, 0x39, 0x4D, 0x39, 0xD2, 0x01, 0x3F, 0x4A, 0x39, 0x4D, 0x39, 0xD2, 0x01, 0x3C, 0x4D, 0x39, 0x4D, 0x39, 0xD2, 0x01, 0x3C, 0xD3, 0x01, 0x3F, 0x4A, 0x3D, 0xCF, 0x01, 0x3F, 0xD0, 0x01, 0x3F, 0x4A, 0x3C, 0xC0, 0x01, 0x3F, 0xD0, 0x01, 0x3F, 0xD0, 0x01, 0x42, 0xCD, 0x01, 0x3F, 0xD0, 0x01, 0x3F, 0xD0, 0x01, 0x3F, 0x4A, 0x39, 0xD3, 0x01, 0x15, 0x0E, 0x17, 0x4D, 0x3A, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x39, 0x4D, 0x3A, 0x4C, 0x3D, 0xD2, 0x01, 0x39, 0x4D, 0x3A, 0x4C, 0x3A, 0x4C, 0x3A, 0x4C, 0x3A, 0x4C, 0x3A, 0x4D, 0x3A, 0x4C, 0x3D, 0x4A, 0x3D, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3A, 0xD5, 0x01, 0x3C, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x39, 0xEE, 0x16},
    /*29*/ {0x68, 0x04, 0x01, 0xFF, 0x17, 0x06, 0xAA, 0x04, 0xAE, 0x04, 0x3E, 0xD0, 0x01, 0x40, 0x4A, 0x3D, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x30, 0x4A, 0x3A, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3A, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3D, 0x4A, 0x3D, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x3C, 0x4A, 0x3D, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3D, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0x96, 0x05, 0xAD, 0x04, 0xB1, 0x04, 0x3D, 0xD2, 0x01, 0x3D, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x47, 0x3F, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x3D, 0x4D, 0x3D, 0x4A, 0x3C, 0xCF, 0x01, 0x3D, 0xD2, 0x01, 0x40, 0x46, 0x40, 0xD2, 0x01, 0x3D, 0xCF, 0x01, 0x3F, 0x47, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3D, 0xD2, 0x01, 0x40, 0x47, 0x3F, 0xCF, 0x01, 0x3F, 0x4B, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x3C, 0x4A, 0x3D, 0xCF, 0x01, 0x3D, 0x4D, 0x3D, 0xCF, 0x01, 0x40, 0x4A, 0x3D, 0x49, 0x3C, 0x4A, 0x3A, 0x4D, 0x39, 0x4D, 0x3C, 0x4A, 0x39, 0xD5, 0x01, 0x3A, 0x4D, 0x39, 0xD5, 0x01, 0x3A, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3D, 0xD5, 0x01, 0x3A, 0xD2, 0x01, 0x3C, 0x0C, 0x16},
    /*30*/ {0x68, 0x04, 0x01, 0xFF, 0x17, 0x06, 0xA9, 0x04, 0xB1, 0x04, 0x3C, 0xCF, 0x01, 0x3F, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x39, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0x47, 0x3F, 0x4A, 0x3C, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3D, 0x4D, 0x3C, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0xCF, 0x01, 0x30, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0xD1, 0x01, 0x40, 0xCF, 0x01, 0x3D, 0x4D, 0x3C, 0xCF, 0x01, 0x3F, 0x47, 0x3F, 0x47, 0x3F, 0x47, 0x3F, 0x47, 0x30, 0x46, 0x40, 0x47, 0x3F, 0xCF, 0x01, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x47, 0x40, 0x47, 0x3F, 0x46, 0x40, 0x46, 0x40, 0x46, 0x40, 0xCF, 0x01, 0x40, 0x47, 0x3F, 0x47, 0x40, 0xCF, 0x01, 0x40, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x3F, 0xCF, 0x01, 0x40, 0x96, 0x05, 0xAD, 0x04, 0xB2, 0x04, 0x3B, 0xD3, 0x01, 0x3D, 0x4A, 0x39, 0xD2, 0x01, 0x40, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3D, 0x4A, 0x3C, 0xCF, 0x01, 0x40, 0x4A, 0x3C, 0x4A, 0x39, 0xD2, 0x01, 0x3E, 0xD1, 0x01, 0x3D, 0x4D, 0x39, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3C, 0x4D, 0x3C, 0xCF, 0x01, 0x3C, 0xD2, 0x01, 0x3D, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3C, 0xD2, 0x01, 0x3F, 0xD0, 0x01, 0x3F, 0x4A, 0x39, 0xD3, 0x01, 0x3F, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x3C, 0x4A, 0x39, 0x4D, 0x3C, 0x4A, 0x39, 0xD2, 0x01, 0x3F, 0x4A, 0x39, 0xD5, 0x01, 0x3A, 0xD5, 0x01, 0x3A, 0x4C, 0x3A, 0x4C, 0x3D, 0x49, 0x3B, 0x4B, 0x3A, 0x4D, 0x3A, 0xD5, 0x01, 0x3A, 0x4C, 0x3A, 0x4C, 0x3A, 0xD5, 0x01, 0x3A, 0xD5, 0x01, 0x3A, 0xD5, 0x01, 0x3D, 0xD2, 0x01, 0x3A, 0xEC, 0x16},

    /*开*/ {0x68, 0x3C, 0x01, 0xFF, 0x17, 0x06, 0xD9, 0x08, 0xB6, 0x04, 0x40, 0x5D, 0x21, 0x64, 0x24, 0x64, 0x24, 0xE1, 0x01, 0x32, 0x64, 0x24, 0x64, 0x24, 0x64, 0x24, 0x64, 0x24, 0xE1, 0x01, 0x32, 0x64, 0x24, 0x64, 0x24, 0xE1, 0x01, 0x35, 0x61, 0x24, 0x61, 0x27, 0x61, 0x28, 0x61, 0x28, 0x61, 0x28, 0x61, 0x28, 0x61, 0x28, 0x61, 0x28, 0x61, 0x28, 0xDD, 0x01, 0x3A, 0x5D, 0x28, 0x5E, 0x2B, 0x5E, 0x2B, 0x5D, 0x2B, 0x5D, 0x2B, 0x5D, 0x2B, 0xD4, 0x01, 0x42, 0x5A, 0x2E, 0xD1, 0x01, 0x42, 0x59, 0x2E, 0x57, 0x32, 0xD1, 0x01, 0x43, 0x56, 0x39, 0xE2, 0x13, 0x40, 0x54, 0x2F, 0x56, 0x32, 0x53, 0x35, 0x53, 0x35, 0x53, 0x36, 0x53, 0x36, 0x50, 0x39, 0x50, 0x39, 0x4F, 0x39, 0x4F, 0x39, 0x4F, 0x3A, 0x4F, 0x3A, 0x4F, 0x3D, 0xCB, 0x01, 0x4A, 0x49, 0x3E, 0x47, 0x42, 0x47, 0x42, 0x46, 0x42, 0x46, 0x42, 0x46, 0x42, 0x46, 0x42, 0x46, 0x42, 0x46, 0x42, 0x42, 0x46, 0x3F, 0x4D, 0x3B, 0x4E, 0x3B, 0x51, 0x37, 0x51, 0xC2, 0x01, 0x50, 0x3B, 0x4A, 0xC9, 0x01, 0x4A, 0xC9, 0x01, 0x50, 0xBA, 0x27, 0xEC, 0x08, 0xB5, 0x04, 0x40, 0x46, 0x42, 0x4A, 0x3E, 0x4A, 0x3E, 0xD1, 0x01, 0x42, 0x4A, 0x3E, 0x4A, 0x3D, 0x4E, 0x3A, 0x4E, 0x3A, 0xD6, 0x01, 0x3E, 0x4E, 0x37, 0x52, 0x36, 0xD9, 0x01, 0x3E, 0x4E, 0x36, 0x55, 0x33, 0x55, 0x33, 0x55, 0x33, 0x55, 0x33, 0x55, 0x33, 0x55, 0x33, 0x56, 0x33, 0x56, 0x33, 0xDD, 0x01, 0x36, 0x56, 0x32, 0x59, 0x2F, 0x59, 0x2F, 0x59, 0x2F, 0x5A, 0x2F, 0x5A, 0x2E, 0xE1, 0x01, 0x33, 0xDD, 0x01, 0x36, 0xDD, 0x01, 0x36, 0x5C, 0x28, 0x61, 0x28, 0xE4, 0x01, 0x33, 0x5C, 0x36, 0xE4, 0x13, 0x40, 0x57, 0x2B, 0x60, 0x24, 0x67, 0x21, 0x67, 0x21, 0x67, 0x21, 0x67, 0x21, 0x67, 0x21, 0x67, 0x21, 0x67, 0x21, 0x67, 0x21, 0x67, 0x21, 0x67, 0x21, 0x6B, 0x1E, 0x67, 0x21, 0x67, 0x21, 0x67, 0x21, 0x67, 0x21, 0x67, 0x21, 0x6B, 0x1E, 0x6B, 0x1E, 0x6B, 0x1E, 0x6B, 0x1E, 0x6B, 0x1E, 0x67, 0x21, 0x6B, 0x1E, 0x67, 0x21, 0x6B, 0x1E, 0x67, 0x21, 0xE8, 0x01, 0x2F, 0xE4, 0x01, 0x2F, 0x63, 0x21, 0xE8, 0x01, 0x2E, 0x94, 0x16},
    /*关*/ {0x68, 0x38, 0x01, 0xFF, 0x17, 0x06, 0xDC, 0x08, 0xB8, 0x04, 0x3D, 0x48, 0x40, 0x48, 0x43, 0x45, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0xD6, 0x01, 0x3D, 0x48, 0x40, 0x48, 0x40, 0xD3, 0x01, 0x40, 0x48, 0x40, 0x48, 0x40, 0x49, 0x40, 0x49, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0xD6, 0x01, 0x3E, 0x48, 0x41, 0x47, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0xD3, 0x01, 0x40, 0x48, 0x40, 0xD5, 0x01, 0x3D, 0x48, 0x43, 0x46, 0x40, 0xD6, 0x01, 0x3D, 0x48, 0x47, 0xE0, 0x13, 0x3E, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0x49, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0xD6, 0x01, 0x3D, 0x49, 0x40, 0x48, 0x40, 0x48, 0x43, 0x45, 0x40, 0x48, 0x40, 0x48, 0x40, 0x49, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x3D, 0x4C, 0x40, 0x48, 0x40, 0xD5, 0x01, 0x3D, 0x48, 0x40, 0xD5, 0x01, 0x3E, 0x48, 0x47, 0xC2, 0x27, 0xEA, 0x08, 0xB8, 0x04, 0x3E, 0x48, 0x40, 0x48, 0x40, 0x49, 0x40, 0x48, 0x40, 0x48, 0x40, 0x48, 0x40, 0x4B, 0x3D, 0x4B, 0x40, 0xD2, 0x01, 0x3E, 0x4B, 0x3D, 0x4B, 0x3D, 0xD5, 0x01, 0x3E, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x41, 0x48, 0x3D, 0xD5, 0x01, 0x3E, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x40, 0x48, 0x3D, 0xD5, 0x01, 0x3E, 0xD5, 0x01, 0x3E, 0xD5, 0x01, 0x3E, 0x4B, 0x41, 0x48, 0x40, 0xD2, 0x01, 0x3E, 0x4B, 0x4A, 0xDD, 0x13, 0x3D, 0x4C, 0x3D, 0x4B, 0x3D, 0x4B, 0x40, 0x49, 0x3D, 0x4B, 0x40, 0x49, 0x40, 0x48, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x40, 0x48, 0x3D, 0x4B, 0x3D, 0x4B, 0x40, 0x48, 0x3D, 0x4C, 0x3E, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4B, 0x3D, 0x4C, 0x3D, 0x4B, 0x3D, 0xD5, 0x01, 0x3E, 0xD5, 0x01, 0x3D, 0x4B, 0x3E, 0x4B, 0x3D, 0x5E, 0x16}

};

// 对红外开启对应的指令
uint8_t start_data[] = {0x68, 0x08, 0x00, 0xFF, 0x12, 0x06, 0x17, 0x16};

// 接收数据的缓存
uint8_t receiveBuffer[128] = "";

// 连接m q t t服务器的对应报文
uint8_t connect_data[] = {0x10, 0x13, 0x00, 0x04, 0x4D, 0x51, 0x54, 0x54, 0x04, 0xC2, 0x00, 0x78, 0x00, 0x03, 0x77, 0x6C, 0x78, 0x00, 0x00, 0x00, 0x00};
// 订阅w l x信息的相关报文
uint8_t subscrip_wlx[] = {0x82, 0x08, 0x00, 0x02, 0x00, 0x03, 0x77, 0x6C, 0x78, 0x00};
// 向 lx 推送相关信息的报告
uint8_t send_lx_12_56[] = {0x30, 0x0F, 0x00, 0x02, 0x6C, 0x78, 0x31, 0x32, 0x2E, 0x33, 0x34, 0x20, 0x32, 0x33, 0x2E, 0x32, 0x33};
//                                                                1     2     .     3     4           2     3     .     2     3
uint8_t index = 0;

float tem; // 温度
float dam; // 湿度

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */

/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN Variables */

/* USER CODE END Variables */
osThreadId defaultTaskHandle;
osThreadId myTask02Handle;
osThreadId myTask03Handle;
osThreadId myTask04Handle;
osSemaphoreId myBinarySem01Handle;

/* Private function prototypes -----------------------------------------------*/
/* USER CODE BEGIN FunctionPrototypes */

/* USER CODE END FunctionPrototypes */

void StartDefaultTask(void const *argument);
void StartTask02(void const *argument);
void StartTask03(void const *argument);
void StartTask04(void const *argument);

void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */

/* GetIdleTaskMemory prototype (linked to static allocation support) */
void vApplicationGetIdleTaskMemory(StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize);

/* USER CODE BEGIN GET_IDLE_TASK_MEMORY */
static StaticTask_t xIdleTaskTCBBuffer;
static StackType_t xIdleStack[configMINIMAL_STACK_SIZE];

void vApplicationGetIdleTaskMemory(StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize)
{
    *ppxIdleTaskTCBBuffer = &xIdleTaskTCBBuffer;
    *ppxIdleTaskStackBuffer = &xIdleStack[0];
    *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;
    /* place for user code */
}
/* USER CODE END GET_IDLE_TASK_MEMORY */

/**
 * @brief  FreeRTOS initialization
 * @param  None
 * @retval None
 */
void MX_FREERTOS_Init(void)
{
    // 定义一个二进制信号量的标识符
    osSemaphoreDef(myBinarySem01);
    // 创建一个二进制信号量，并将其句柄存储在myBinarySem01Handle变量中
    myBinarySem01Handle = osSemaphoreCreate(osSemaphore(myBinarySem01), 1);

    // 采集温湿度信息发送给手机a p p
    osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);
    defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);

    // 温度低于自定义值发射对应的红外信号
    osThreadDef(myTask02, StartTask02, osPriorityIdle, 0, 128);
    myTask02Handle = osThreadCreate(osThread(myTask02), NULL);

    // 剩余任务点亮小灯---判断是否卡死
    osThreadDef(myTask03, StartTask03, osPriorityIdle, 0, 128);
    myTask03Handle = osThreadCreate(osThread(myTask03), NULL);

    // 接收手机发过来的指定信号进行相应的处理调动红外
    osThreadDef(myTask04, StartTask04, osPriorityNormal, 0, 128);
    myTask04Handle = osThreadCreate(osThread(myTask04), NULL);
}

/* USER CODE BEGIN Header_StartDefaultTask */
/**
 * @brief  Function implementing the defaultTask thread.
 * @param  argument: Not used
 * @retval None
 */
/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void const *argument)
{
    /* USER CODE BEGIN StartDefaultTask */
    /*********************************************************** 采集温湿度信息发送给手机a p p ***********************************************************/
    /* Infinite loop */

    volatile int c1, t1;

    uint32_t CT_data[2] = {0, 0};
    AHT20_Init();
    int flag_open = 0;

    // 下面的用与wifi接入mqtt

    HAL_UART_Transmit(&huart1, connect_data, sizeof(connect_data), 0xFFFF);
    // printf("\r\n");
    vTaskDelay(pdMS_TO_TICKS(1000));
    // OSTimeDlyHMSM(0, 0, 0, 100, OS_OPT_TIME_HMSM_STRICT, &err);
    // printf("成功连接mqtt服务器\r\n");

    HAL_UART_Transmit(&huart1, subscrip_wlx, sizeof(subscrip_wlx), 0xFFFF);
    vTaskDelay(pdMS_TO_TICKS(1000));
    // printf("\r\n");
    // OSTimeDlyHMSM(0, 0, 0, 100, OS_OPT_TIME_HMSM_STRICT, &err);
    // printf("成功订阅对应的消息\r\n");

    for (;;)
    {

        AHT20_Read_CTdata_crc(CT_data);
        c1 = CT_data[0] * 1000 / 1024 / 1024;
        t1 = CT_data[1] * 2000 / 1024 / 1024 - 500;
        dam = c1 / 10 + (float)(c1 % 10) * 0.1;
        tem = t1 / 10 + (float)(t1 % 10) * 0.1;
        // printf("\r\n");
        vTaskDelay(pdMS_TO_TICKS(100));
        // printf("温度: %.2f  湿度: %.2f \r\n", tem, dam);

        // 将浮点数转换为 ASCII 码表示
        int intPart = (int)tem;
        int fracPart = (int)((tem - intPart) * 100);

        send_lx_12_56[6] = intPart / 10 + '0';
        send_lx_12_56[7] = intPart % 10 + '0';
        send_lx_12_56[9] = fracPart / 10 + '0';
        send_lx_12_56[10] = fracPart % 10 + '0';

        intPart = (int)dam;
        fracPart = (int)((dam - intPart) * 100);

        send_lx_12_56[12] = intPart / 10 + '0';
        send_lx_12_56[13] = intPart % 10 + '0';
        send_lx_12_56[15] = fracPart / 10 + '0';
        send_lx_12_56[16] = fracPart % 10 + '0';

        HAL_UART_Transmit(&huart1, send_lx_12_56, sizeof(send_lx_12_56), 0xFFFF);

        osDelay(1);
    }
    /*********************************************************** 采集温湿度信息发送给手机app ***********************************************************/
    /* USER CODE END StartDefaultTask */
}

/* USER CODE BEGIN Header_StartTask02 */
/**
 * @brief Function implementing the myTask02 thread.
 * @param argument: Not used
 * @retval None
 */
/* USER CODE END Header_StartTask02 */
void StartTask02(void const *argument)
{
    /* USER CODE BEGIN StartTask02 */
    /* Infinite loop */
    /*********************************************************** 温度低于自定义值发射对应的信号  ***********************************************************/

    uint8_t flag_open = 0;

    for (;;)
    {
        osDelay(1);

        if (!flag_open && tem > 24)
        {
            // 打开空调
            HAL_UART_Transmit_DMA(&huart2, write_data[0], sizeof(write_data[0]));
            vTaskDelay(pdMS_TO_TICKS(100));
            HAL_UART_Transmit_DMA(&huart2, start_data, sizeof(start_data));
            flag_open = 1;
        }
        else if (flag_open && tem < 22)

        {
            // 关闭空调
            HAL_UART_Transmit_DMA(&huart2, write_data[1], sizeof(write_data[1]));
            vTaskDelay(pdMS_TO_TICKS(100));
            HAL_UART_Transmit_DMA(&huart2, start_data, sizeof(start_data));
            flag_open = 0;
        }

        // HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, 1);
        // vTaskDelay(pdMS_TO_TICKS(100));
        // HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, 0);
        // vTaskDelay(pdMS_TO_TICKS(100));
    }
    /*********************************************************** 温度低于自定义值发射对应的信号  ***********************************************************/
    /* USER CODE END StartTask02 */
}
/* USER CODE BEGIN Header_StartTask03 */
/**
 * @brief Function implementing the myTask03 thread.
 * @param argument: Not used
 * @retval None
 */
/* USER CODE END Header_StartTask03 */
void StartTask03(void const *argument)
{
    /* USER CODE BEGIN StartTask03 */
    /* Infinite loop */
    for (;;)
    {
        osDelay(1);

        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 1);
        vTaskDelay(pdMS_TO_TICKS(1000));
        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 0);
        vTaskDelay(pdMS_TO_TICKS(1000));
    }
    /* USER CODE END StartTask03 */
}

/* USER CODE BEGIN Header_StartTask04 */
/**
 * @brief Function implementing the myTask04 thread.
 * @param argument: Not used
 * @retval None
 */
/* USER CODE END Header_StartTask04 */
void StartTask04(void const *argument)
{
    /* USER CODE BEGIN StartTask04 */
    /*********************************************************** 接收手机发过来的指定信号进行相应的处理调动红外  ***********************************************************/

    HAL_UART_Receive_IT(&huart1, (uint8_t *)RxTemp, REC_LENGTH);
    /* Infinite loop */
    for (;;)
    {
        osSemaphoreWait(myBinarySem01Handle, 100); // 等待二值信号量
        if (RxFlag == 1)                           // 数据接收完成
        {
            // for (int i = 0; i < RxCounter; i++) // 打印接收数组存储的内容
            //     printf("%c", RxBuffer[i]);
            // HAL_UART_Transmit(&huart2, RxBuffer, RxCounter, 0xFFFF);

            index = (RxBuffer[7] - '0') * 10 + (RxBuffer[8] - '0') - 15;
            // printf("index: %d\r\n", index);
            HAL_UART_Transmit_DMA(&huart2, write_data[index], sizeof(write_data[index]));
            vTaskDelay(pdMS_TO_TICKS(100));
            HAL_UART_Transmit_DMA(&huart2, start_data, sizeof(start_data));
            RxFlag = 0;                          // 接收标志清零
            RxCounter = 0;                       // 接收计数清零
            memset(RxBuffer, 0, MAX_REC_LENGTH); // 清空接收数组
        }
        osDelay(1);
    }
    /*********************************************************** 接收手机发过来的指定信号进行相应的处理调动红外  ***********************************************************/

    /* USER CODE END StartTask04 */
}

/* Private application code --------------------------------------------------*/
/* USER CODE BEGIN Application */

/* USER CODE END Application */
